<?php 
/**
 * alltosun.com 素材 index.php
 * ============================================================================
 * 版权所有 (C) 2009-2015 北京互动阳光科技有限公司，并保留所有权利。
 * 网站地址: http://www.alltosun.com
 * ----------------------------------------------------------------------------
 * 许可声明: 这是一个开源程序，未经许可不得将本软件的整体或任何部分用于商业用途及再发布。
 * ============================================================================
 * $Author: 王磊 (wangl@alltosun.com) $
 * $Date: 2015-12-14 下午3:20:35 $
*/

class Action
{
    private $user_id;
    private $per_page = 10;

    public function __construct()
    {
        $this->user_id = user_helper::get_user_id();
    }

    /**
     * 素材列表
     */
    public function index()
    {
        // @todo 接收参数
        $status = Request::getParam('status', 1);
        $progress = Request::getParam('progress', 1);
        $search_filter = Request::getParam('search_filter', array());
        $page_no = Request::getParam('page_no', 1);

        // 拼装搜索条件
        $filter = array();
        $filter['status'] = $status;
        $filter['progress'] = $progress;

        if (isset($search_filter['title']) && $search_filter['title']) {
            $filter['title LIKE'] = '%'.$search_filter['title'].'%';
        }

        if (isset($search_filter['start_date']) && $search_filter['start_date']) {
            $filter['add_time >='] = $search_filter['start_date'].' 00:00:00';
        }

        if (isset($search_filter['end_date']) && $search_filter['end_date']) {
            $filter['add_time <='] = $search_filter['end_date'].' 23:59:59';
        }

        $count = _model('material')->getTotal($filter);
        $material_list = array();

        if ($count) {
            $pager = new Pager($this->per_page);
            $limit = $pager->getLimit($page_no);
            $order = 'ORDER BY `id` DESC ';

            if ($pager->generate($count)) {
                Response::assign('pager', $pager);
            }
            // 查询数据
            $material_list = _model('material')->getList($filter, $order.$limit);
        }

        // 分配变量
        Response::assign('material_list', $material_list);
        Response::assign('status', $status);
        Response::assign('progress', $progress);
        Response::assign('search_filter', $search_filter);

        // 渲染模板
        Response::display('admin/index.html');
    }

    /**
     * 详细信息
     */
    public function __call($action = '', $params = array())
    {
        $id = (int)$action;

        if (!$id) {
            return '请选择要查看的内容';
        }

        $info = _uri('material', $id);

        if (!$info) {
            return '该内容不存在';
        }

        // assign
        Response::assign('info', $info);

        // display
        Response::display('admin/detail.html');
    }

    /**
     * 添加素材
     */
    public function add()
    {
        Response::display('admin/add.html');
    }

    /**
     * 编辑素材
     */
    public function edit()
    {
        // request
        $id = Request::getParam('id', 0);

        if (!$id) {
            return '请选择编辑内容';
        }
        $info = _uri('material', $id);

        if (!$info || $info['status'] == 0) {
            return '内容不存在或者已删除';
        }

        // assign
        Response::assign('info', $info);

        // display
        Response::display('admin/add.html');
    }

    /**
     * 保存编辑
     */
    public function save()
    {
        $info = Request::getParam('info', array());
        $id = Request::getParam('id', 0);

        // check 判断素材名是否正确
        if (!isset($info['title']) || !$info['title']) {
            return '请输入素材名';
        }

        // 素材的播放地址
        $info['province'] = isset($info['province']) && $info['province'] ? $info['province'] : '';
        $info['city'] = isset($info['city']) && $info['city'] ? $info['city'] : '';
        $info['is_nationwide'] = 1;

        if ($info['province'] && $info['city']) {
            $info['is_nationwide'] = 0;
        }

        if (!isset($info['path']) || !$info['path']) {
            return '请上传素材';
        }

        $type_arr = array('.jpg', '.jpeg', '.gif', '.png', '.mp4');
        $type = strrchr($info['path'], '.');

        if (!in_array($type, $type_arr)) {
            return '请上传.jpg, .jpeg, .gif, .png, .mp4 格式文件';
        }

        $info['type'] = 1;
        if ($type == '.mp4') {
            $info['type'] = 2;
        }

        if ($id) {
            _model('material')->update($id, $info);
        } else {

            $material_info = _uri('material', array('title'=>$info['title']));
            if ($material_info) {
                return '对不起，已有同名素材';
            }

            $id = _model('material')->create($info);
            if (!$id) {
                return '添加失败';
            }
        }
        Response::redirect('material/admin');
    }

    /**
     * 删除素材
     */
    public function delete()
    {
        $ids = Request::getParam('id');

        if (!$ids) {
            return '请选择要删除的内容';
        }
        $id = explode(',', trim($ids));

        foreach ($id as $v) {
            $info = _uri('material', $v);
            if (!$info) {
                continue;
            }
            if ($info['status']) {
                _model('material')->update($v, array('status'=>0));

                // 删除素材时，将关联数据删除
                _model('play_material')->delete(array('material_id'=>$v));
            } else {
                //_model('material')->delete($v);
            }
        }
        return array('info'=>'ok');
    }

    /**
     * 还原
     */
    public function change_status()
    {
        $id = Request::getParam('id', 0);

        if (!$id) {
            return '请选择要操作的内容';
        }

        $info = _uri('material', $id);
        if (!$info || $info['status']) {
            return '该内容不存在，或以执行过相同操作';
        }

        _model('material')->update($id, array('status'=>1));

        return array('info'=>'ok');
    }

    /**
     * 取省下的城市列表
     * @return string
     */
    public function get_city()
    {
        $code = Request::getParam('code', 0);

        if (!$code) {
            return '请先选择省';
        }
        return material_helper::get_province($code, 2);
    }

    public function change_progress()
    {
        // request
        $id = Request::getParam('id', 0);
        $progress = Request::getParam('progress', 0);

        // check
        if (!$id) {
            return '请选择要操作的内容';
        }
        if (!$progress) {
            return '请选择要修改的状态';
        }

        $filter = array('progress'=>$progress);

        // update
        $res = _model('material')->update($id, $filter);

        if (!$res) {
            return '修改失败';
        }
        return array('info'=>'ok');
    }
}
?>